#include <bits/stdc++.h>
using namespace std;
using ull = unsigned long long;

// 将无符号整数 x 转成“二进制字符串（不含前导零）”。
// 注意 x=0 要单独返回 "0"。
string toBinStr(ull x) {
    if(x == 0ULL) return "0";
    string s;
    while(x) {
        s.push_back(char('0' + (x & 1ULL)));
        x >>= 1;
    }
    reverse(s.begin(), s.end());
    return s;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while(T--){
        ull a, b;
        cin >> a >> b;

        // 特判 b=0
        if(b == 0ULL){
            // 无论 a=0 还是 a>0，都可以通过若干次 >>1 得到 0
            cout << "Yes\n";
            continue;
        }
        // 特判 a=0 而 b>0 不可能
        if(a == 0ULL){
            cout << "No\n";
            continue;
        }

        // 否则 a>0 且 b>0
        string A = toBinStr(a);
        string B = toBinStr(b);

        // 去掉 B 尾部所有的 '0'，得到 C
        string C = B;
        while(!C.empty() && C.back() == '0'){
            C.pop_back();
        }
        // 如果去完之后变成空串 (即 B 全是 '0')，其实 b=0 已经在上面处理过了，
        // 因此这里不会出现 C.empty()。直接按逻辑走下去即可。

        // 只要 C 作为连续子串出现在 A 中即可
        if(A.find(C) != string::npos){
            cout << "Yes\n";
        } else {
            cout << "No\n";
        }
    }

    return 0;
}